/* @flow */
// 循环遍历执行队列
export function runQueue(
  queue: Array<?NavigationGuard>,
  fn: Function,
  cb: Function
) {
  const step = (index) => {
    // 执行完钩子函数后，执行callback
    if (index >= queue.length) {
      cb()
    } else {
      // 遍历执行queue队列
      if (queue[index]) {
        fn(queue[index], () => {
          step(index + 1)
        })
      } else {
        // index + 1 > length，触发cb函数执行
        step(index + 1)
      }
    }
  }
  step(0)
}
